/*
 * @author: Spring
 * @create: 2021-06-18 14:39 PM
 * @license: MIT
 * @lastAuthor: Spring
 * @lastEditTime: 2021-07-05 14:21 PM
 * @desc:
 */
import axios from "axios";
import router from "@/router/index.js";
import store from "@/store/index.js";

if (process.env.NODE_ENV === "development") {
  axios.defaults.baseURL = "http://api_devss.wanxikeji.cn";
} else if (process.env.NODE_ENV === "debug") {
  axios.defaults.baseURL = "http://api_devss.wanxikeji.cn";
} else if (process.env.NODE_ENV === "production") {
  axios.defaults.baseURL = "http://api_devss.wanxikeji.cn";
}

axios.defaults.headers.post["Content-Type"] =
  "application/x-www-form-urlencoded;charset=UTF-8;multipart/form-data";

axios.interceptors.request.use(
  function(config) {
    // const token = store.state.token
    // token && (config.headers.Authorization = token)
    // console.group("全局请求拦截")
    // console.log(config)
    return config;
  },
  function(err) {
    console.log(err);
  }
);

axios.interceptors.response.use(
  function(config) {
    // console.group("全局响应拦截")
    console.log(config)
    if (config.status == 200) {
      if(config.data.code==3000){
        console.log(11111111111111);
        store.commit('showLogin')
      }
      if(config.data.code==3002){
        console.log(2222222222);
        localStorage.clear()
        store.commit('setToken',0)
        store.commit('setInfo',0)
        store.commit('showLogin')
      }
      console.log(33333);
      return Promise.resolve(config);
    }
  },
  function(error) {
    if (error.response.status) {
      switch (error.response.status) {
        // 401: 未登录
        // 未登录则跳转登录页面，并携带当前页面的路径
        // 在登录成功后返回当前页面，这一步需要在登录页操作。
        case 401:
          router.replace({
            path: "/login",
          });
          break;
        // 403 token过期
        // 登录过期对用户进行提示
        // 清除本地token和清空vuex中token对象
        // 跳转登录页面
        case 403:
          // Toast({
          //   message: "登录过期，请重新登录",
          //   duration: 1000,
          //   forbidClick: true,
          // })
          // 清除token
          store.commit("setToken", 0);
          // 跳转登录页面，并将要浏览的页面fullPath传过去，登录成功后跳转需要访问的页面
          setTimeout(() => {
            router.replace({
              path: "/login",
              query: {
                redirect: router.currentRoute.fullPath,
              },
            });
          }, 1000);
          break;
        // 404请求不存在
        case 404:
          // Toast({
          //   message: "网络请求不存在",
          //   duration: 1500,
          //   forbidClick: true,
          // })
          break;
        // 其他错误，直接抛出错误提示
        default:
          Toast({
            message: error.response.data.message,
            duration: 1500,
            // forbidClick: true,
          });
      }
      return Promise.reject(error.response);
    }
  }
);

export function get(url, params) {
  return new Promise((resolve, reject) => {
    axios
      .get(url, {
        params: params,
      })
      .then((res) => {
        resolve(res.data);
      })
      .catch((err) => {
        reject(err.data);
      });
  });
}

export function post(url, data) {
  return new Promise((resolve, reject) => {
    axios
      .post(url, data)
      .then((res) => {
        resolve(res.data);
      })
      .catch((err) => {
        reject(err.data);
      });
  });
}
